package sgsi.controller.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import sgsi.controller.dao.AlmacenDao;
import sgsi.model.entidades.espacios.Almacen;

public class AlmacenDaoHibernateImpl extends HibernateDaoSupport implements AlmacenDao {

	private static final String BUSCAR_POR_CODIGO = "select a from Almacen a where a.estaBorrado is false and a.codigoAlmacen = ?";
	private static final String BUSCAR_TODOS = "select a from Almacen a where a.estaBorrado is false and ";
	private static final String NOMBRE = " a.nombre like ";
	private static final String OBTENER_TODOS = "select a from Almacen a where a.estaBorrado is false order by a.codigoAlmacen";
	
	public boolean eliminarAlmacenPorCodigo(int codigo) {
		// TODO Auto-generated method stub
		return false;
	}

	public Almacen guardar(Almacen almacen) {
		getHibernateTemplate().saveOrUpdate(almacen);
		return almacen;
	}
	
	@SuppressWarnings("unchecked")
	public Almacen obtenerAlmacenPorCodigo(int codigo) {
		List<Almacen> resultado = getHibernateTemplate().find(BUSCAR_POR_CODIGO, codigo);
		
		if (resultado.isEmpty())
			return null;
		
		return resultado.get(0);
	}
	
	@SuppressWarnings("unchecked")
	public List<Almacen> obtenerTodos() {
		return getHibernateTemplate().find(OBTENER_TODOS);
	}

	@SuppressWarnings("unchecked")
	public List<Almacen> obtenerTodosBusqueda(String nombre,
			int paisSeleccionado, int provinciaSeleccionada,
			int localidadSeleccionada) {
		String newQuery = BUSCAR_TODOS + NOMBRE + "'%" + nombre + "%'";
		if(localidadSeleccionada>0){
			newQuery = newQuery + " AND a.direccion.localidad = " + localidadSeleccionada;
		}else if(provinciaSeleccionada>0){
			newQuery = newQuery + " AND a.direccion.localidad.provincia = " + provinciaSeleccionada;
		}else if(paisSeleccionado>0){
			newQuery = newQuery + " AND a.direccion.localidad.provincia.pais = " + paisSeleccionado;
		}
		
		return getHibernateTemplate().find( newQuery );
	}

}
